package {
	// Importa Flixel
	import org.flixel.*;
	
	public class Player extends FlxSprite {
		// Imagem do jogador
		[Embed(source = "data/player.png")] private var ImgPlayer:Class;
		
		// Poder de pulo
		private var _jumpPower:int;
		
		// Método construtor
		public function Player(X:int, Y:int):void {
			// Carrega o sprite
			super(X, Y);
			loadGraphic(ImgPlayer, true, true, 70, 80);
			
			// Física básica do jogador
			var runSpeed:uint = 300;
			drag.x = runSpeed * 8;
			acceleration.y = 520;
			_jumpPower = 300;
			maxVelocity.x = runSpeed;
			maxVelocity.y = _jumpPower;
			
			// Animações
			addAnimation("idle", [0, 1], 4);
			addAnimation("jump", [8, 9, 10, 11, 12], 12, false);
			addAnimation("run", [2, 3, 4, 5, 6, 7], 12);
		}
		
		// Método de atualização
		override public function update():void {
			// Movimento
			acceleration.x = 0;
			if (FlxG.keys.LEFT) {
				facing = LEFT;
				acceleration.x -= drag.x;
			} else if (FlxG.keys.RIGHT) {
				facing = RIGHT;
				acceleration.x += drag.x;
			}
			if (FlxG.keys.justPressed("X") && !velocity.y) {
				velocity.y = -_jumpPower;
			}
			
			// Animação
			if (velocity.y != 0) {
				play("jump");
			} else if (velocity.x == 0) {
				play("idle");
			} else {
				play("run");
			}
			
			// Atualiza personagem e sua posição
			super.update();
		}
	}
}